Software applications can be provided as on-premise applications, or cloud-hosted applications. For example, a first version of an application can be provided as an on-premise application, and a second version of the application can be provided as a cloud-hosted application. In general, on-premise applications of an enterprise that are installed on, and executed using hardware operated by an enterprise. In contrast, cloud-hosted applications are installed on, and executed using hardware operated by a third-party cloud service provider.
Continuous delivery of software for both cloud-hosted, and on-premise deployments is problematic. For example, cloud-hosted software is delivered with continuous integration, and continuous delivery pipelines directly from software repositories without additional packing and production steps. This occurs with a relatively high frequency (e.g., daily). The same principle should be applied to on-premise deliveries of the same application. Also, on-premise deliveries must adhere to regulatory regimes (e.g., export control, embargo checks) on access to the software, while preserving the continuous delivery qualities to the cloud. Clients that process software artifacts during the lifecycle, and the software repositories providing these artifacts cannot be changed to facilitate on-premise consumption.
Continuous delivery (CD) infrastructures, and software repositories are often provided as third-party products, or open source tools. It can be costly, or even impossible to adapt these infrastructures and tools for specific on-premise delivery requirements, such as embargo checks, and/or license checks. This would require, for example, entanglement of several open source projects with a hurdle in convincing the community to adopt proposed changes, or fork the projects, and enhance them in an enterprise-proprietary manner. In addition, some entities do not support network proxies, such that one cannot easily intercept the traffic for access control or export audit logging.
Further, the technical product definition between on-premise, and cloud (i.e., the set of software repository URLs pointing to the software artifacts) should not vary between the cloud, and on-premise deliveries. For example, it is error-prone, and costly to change the product definition for the cloud, and the on-premise deliveries.